#!/bin/bash

# RTX 4060Ti 16G显卡检测主脚本
# 作者：AI助手
# 功能：集成各项显卡检测功能

# 显示彩色输出
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # 无颜色

# 检查脚本是否可执行
make_executable() {
  if [ ! -x "$1" ]; then
    chmod +x "$1"
  fi
}

# 打印标题
clear
echo -e "${CYAN}============================================${NC}"
echo -e "${CYAN}      RTX 4060Ti 16G 显卡检测平台         ${NC}"
echo -e "${CYAN}============================================${NC}"
echo ""

# 检查是否为root用户
if [ "$EUID" -ne 0 ]; then
  echo -e "${RED}请使用root权限运行此脚本：sudo $0${NC}"
  exit 1
fi

# 检查必要文件是否存在
for script in gpu_verify.sh memory_test.sh mining_detect.sh; do
  if [ ! -f "$script" ]; then
    echo -e "${RED}错误：未找到 $script 文件。${NC}"
    echo -e "${YELLOW}请确保所有脚本文件都在当前目录中。${NC}"
    exit 1
  fi
  make_executable "$script"
done

# 主菜单
show_menu() {
  echo -e "${PURPLE}请选择要运行的测试:${NC}"
  echo -e "${GREEN}1. 基本验证${NC} - 验证显卡真伪和基本性能"
  echo -e "${GREEN}2. 显存测试${NC} - 测试显存稳定性和性能"
  echo -e "${GREEN}3. 矿卡检测${NC} - 检测显卡是否曾被用于挖矿"
  echo -e "${GREEN}4. 综合检测${NC} - 运行所有测试(耗时较长)"
  echo -e "${GREEN}5. 查看README${NC} - 显示使用说明"
  echo -e "${GREEN}0. 退出${NC}"
  echo ""
  read -p "请输入选项(0-5): " choice
}

# 显示README
show_readme() {
  if [ -f "README.md" ]; then
    if command -v less &> /dev/null; then
      less README.md
    else
      cat README.md | more
    fi
  else
    echo -e "${RED}错误：未找到README.md文件。${NC}"
  fi
}

# 运行脚本
run_script() {
  echo -e "\n${YELLOW}正在启动 $1...${NC}"
  sleep 1
  ./$1
  
  echo -e "\n${GREEN}$1 已完成执行。${NC}"
  echo -e "${YELLOW}按回车键返回主菜单...${NC}"
  read
}

# 运行综合检测
run_comprehensive() {
  echo -e "\n${YELLOW}即将开始综合检测，这将运行所有测试，可能需要较长时间。${NC}"
  echo -e "${RED}警告：测试过程会使显卡满载并升温，请确保散热良好。${NC}"
  read -p "确定要继续吗？(y/n) " -n 1 -r
  echo
  if [[ $REPLY =~ ^[Yy]$ ]]; then
    # 创建结果目录
    RESULTS_DIR="gpu_test_results_$(date +%Y%m%d_%H%M%S)"
    mkdir -p "$RESULTS_DIR"
    
    echo -e "\n${CYAN}第1步: 基本验证${NC}"
    ./gpu_verify.sh
    cp gpu_test_report_* "$RESULTS_DIR/" 2>/dev/null
    
    echo -e "\n${CYAN}第2步: 显存测试${NC}"
    ./memory_test.sh
    cp gpu_memory_test_* "$RESULTS_DIR/" 2>/dev/null
    
    echo -e "\n${CYAN}第3步: 矿卡检测${NC}"
    ./mining_detect.sh
    cp mining_test_report_* "$RESULTS_DIR/" 2>/dev/null
    
    echo -e "\n${GREEN}综合测试完成!${NC}"
    echo -e "${YELLOW}所有测试报告已保存至: $RESULTS_DIR/${NC}"
    
    # 生成综合报告
    SUMMARY_FILE="$RESULTS_DIR/综合报告.txt"
    {
      echo "RTX 4060Ti 16G显卡综合检测报告"
      echo "============================"
      echo "测试时间: $(date)"
      echo ""
      echo "测试结果摘要:"
      echo "------------"
      echo "1. 基本验证: "
      if [ -f "$RESULTS_DIR/gpu_test_report_"* ]; then
        echo "   已完成，详见相应报告文件"
      else
        echo "   未生成报告"
      fi
      
      echo "2. 显存测试: "
      if [ -f "$RESULTS_DIR/gpu_memory_test_"* ]; then
        echo "   已完成，详见相应报告文件"
      else
        echo "   未生成报告"
      fi
      
      echo "3. 矿卡检测: "
      if [ -f "$RESULTS_DIR/mining_test_report_"* ]; then
        MINING_SCORE=$(grep "矿卡可能性评分" "$RESULTS_DIR/mining_test_report_"* | head -1 | awk -F': ' '{print $2}')
        if [ ! -z "$MINING_SCORE" ]; then
          echo "   矿卡可能性评分: $MINING_SCORE"
          if [ "$MINING_SCORE" -le 20 ]; then
            echo "   结论: 可能是正常显卡"
          elif [ "$MINING_SCORE" -le 50 ]; then
            echo "   结论: 有一定矿卡可能性，建议进一步检查"
          elif [ "$MINING_SCORE" -le 80 ]; then
            echo "   结论: 较高矿卡可能性，谨慎购买"
          else
            echo "   结论: 极可能是矿卡，不建议购买"
          fi
        else
          echo "   已完成，详见相应报告文件"
        fi
      else
        echo "   未生成报告"
      fi
      
      echo ""
      echo "建议:"
      echo "-----"
      echo "1. 仔细阅读各测试报告获取详细信息"
      echo "2. 综合考虑各项测试结果进行判断"
      echo "3. 如有疑问，建议联系专业技术人员进一步检测"
      
    } > "$SUMMARY_FILE"
    
    echo -e "\n${GREEN}已生成综合报告: $SUMMARY_FILE${NC}"
    
    echo -e "${YELLOW}按回车键返回主菜单...${NC}"
    read
  fi
}

# 主循环
while true; do
  clear
  show_menu
  
  case $choice in
    1)
      run_script "gpu_verify.sh"
      ;;
    2)
      run_script "memory_test.sh"
      ;;
    3)
      run_script "mining_detect.sh"
      ;;
    4)
      run_comprehensive
      ;;
    5)
      show_readme
      echo -e "\n${YELLOW}按回车键返回主菜单...${NC}"
      read
      ;;
    0)
      echo -e "\n${GREEN}感谢使用RTX 4060Ti 16G显卡检测工具！${NC}"
      exit 0
      ;;
    *)
      echo -e "\n${RED}无效选项，请重新选择。${NC}"
      sleep 1
      ;;
  esac
done 